package com.nine.controller;

import com.nine.entity.Dept;
import com.nine.entity.MyReturn;
import com.nine.service.impl.DeptServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author ：Fmc
 * @date ：Created in 2022/6/23 16:54
 * @description： 部门的控制层
 * @modified By：
 * @version: 1.0
 */
@RestController
@RequestMapping("dept")
public class DeptController {

    @Autowired
    private DeptServiceImpl deptService;
    MyReturn myReturn = new MyReturn();
    int num = 0;

    @PostMapping("selectAllDept.do")
    public MyReturn selectAllDept(Dept dept, String field, String order){
        Map map = new HashMap();
        // 模糊查询条件
        map.put("deptName",dept.getDeptName());
        map.put("createBy",dept.getCreateBy());
        map.put("updateBy",dept.getUpdateBy());
        // 排序条件
        map.put("field",field);
        map.put("order",order);
        // 执行sql语句，获取结果
        List<Dept> deptList = deptService.selectAllDept(map);
        // 封装json格式，传回前端
        myReturn.setCode(0);
        myReturn.setData(deptList);
        return myReturn;
    }
    @PostMapping("addDept.do")
    public MyReturn addDept(Dept dept){
        // 校验当前部门实体的名称是否存在，若存在则添加失败，并给出提示信息
        if (deptService.findDept(dept)){
            Map map = new HashMap();
            // 把dept实体封装到map中
            map.put("deptName",dept.getDeptName());
            // 确认状态
            if (dept.getState() == null ){
                map.put("state","异常");
            } else {
                map.put("state","正常");
            }
            map.put("createBy",dept.getCreateBy());
            map.put("createTime",Timestamp.valueOf(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date())));
            // 执行sql语句，获取结果
            num = deptService.addDept(map);
            // 封装json格式，传回前端
            if (num > 0) {
                myReturn.setCode(0);
                myReturn.setMsg("操作成功");
            } else {
                myReturn.setCode(200);
                myReturn.setMsg("操作失败");
            }
            return myReturn;
        }
        myReturn.setCode(200);
        myReturn.setMsg("部门名称已存在");
        return myReturn;
    }
    @PostMapping("deleteDept.do")
    public MyReturn deleteDept(String deptid){
        // 获取前端传来的用户id，ids.join(",")返回的是字符串，所以需要用string接收
        String deptidStr = deptid;
        // 把获取到的字符串拆分为 userid数组，分割条件是  逗号
        String[] deptids = deptidStr.split(",");
        // 执行sql语句，获取结果
        num = deptService.deleteDept(deptids);
        if (num >= deptids.length) {
            myReturn.setCode(0);
            myReturn.setMsg("操作成功");
        } else {
            myReturn.setCode(200);
            myReturn.setMsg("操作失败");
        }
        return myReturn;
    }
    @PostMapping("updateDept.do")
    public MyReturn updateDept(Dept dept){
        // 校验当前部门实体的名称是否存在，若存在则添加失败，并给出提示信息
        if (deptService.findDept(dept)){
            // 日期格式转换
            dept.setCreateTime(Timestamp.valueOf(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(dept.getCreateTime())));
            // 当前修改时间
            dept.setUpdateTime(Timestamp.valueOf(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date())));
            // 修改状态
            if (dept.getState() == null ){
                dept.setState("异常");
            } else {
                dept.setState("正常");
            }
            // 执行sql语句，获取结果
            num = deptService.updateDept(dept);
            if (num > 0) {
                myReturn.setCode(0);
                myReturn.setMsg("操作成功");
                myReturn.setData(dept.getState());
            } else {
                myReturn.setCode(200);
                myReturn.setMsg("操作失败");
            }
        }
        myReturn.setCode(200);
        myReturn.setMsg("部门名称已存在");
        return myReturn;
    }
}
